/**
 * 
 */
package br.com.skynix.tcmc.model.oportunidade;

import java.math.BigDecimal;
import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.annotations.ForeignKey;

import br.com.skynix.tcmc.base.model.EntidadeAuditavel;
import br.com.skynix.tcmc.model.rh.Empresa;

/**
 * @author davi
 * 
 */
@Entity
@Table(name = "tb_campanha")
public class Campanha extends EntidadeAuditavel {
	@ManyToOne
	@JoinColumn(name = "id_campanha_fk", nullable = true,
			referencedColumnName = "id")
	@ForeignKey(name = "FK001_campanha")
	private Campanha campanha;

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_tipo_campanha_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK002_campanha")
	private TipoCampanha tipoCampanha;

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_status_campanha_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK003_campanha")
	private StatusCampanha statusCampanha;

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_empresa_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK004_campanha")
	private Empresa empresa;

	@Size(max = 255)
	@Column(nullable = true, length = 255)
	private String nome;

	@Column(nullable = true, columnDefinition = "TEXT DEFAULT NULL")
	private String descricao;

	@Column(name = "data_inicio", nullable = true)
	private Timestamp dataInicio;

	@Column(name = "data_termino", nullable = true)
	private Timestamp dataTermino;

	@Column(name = "resposta_esperada", nullable = true, precision = 15,
			scale = 2)
	private BigDecimal respostaEsperada;

	@Column(name = "receita_esperada", nullable = true, precision = 15,
			scale = 2)
	private BigDecimal receitaEsperada;

	@Column(name = "custo_estimado", nullable = true, precision = 15, scale = 2)
	private BigDecimal custoEstimado;

	@Column(name = "custo_real", nullable = true, precision = 15, scale = 2)
	private BigDecimal custoReal;

	@Column(nullable = true, length = 10)
	private Integer meta;

	/**
	 * @return the campanha
	 */
	public Campanha getCampanha() {
		return campanha;
	}

	/**
	 * @param campanha the campanha to set
	 */
	public void setCampanha(Campanha campanha) {
		this.campanha = campanha;
	}

	/**
	 * @return the tipoCampanha
	 */
	public TipoCampanha getTipoCampanha() {
		return tipoCampanha;
	}

	/**
	 * @param tipoCampanha the tipoCampanha to set
	 */
	public void setTipoCampanha(TipoCampanha tipoCampanha) {
		this.tipoCampanha = tipoCampanha;
	}

	/**
	 * @return the statusCampanha
	 */
	public StatusCampanha getStatusCampanha() {
		return statusCampanha;
	}

	/**
	 * @param statusCampanha the statusCampanha to set
	 */
	public void setStatusCampanha(StatusCampanha statusCampanha) {
		this.statusCampanha = statusCampanha;
	}

	/**
	 * @return the empresa
	 */
	public Empresa getEmpresa() {
		return empresa;
	}

	/**
	 * @param empresa the empresa to set
	 */
	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	/**
	 * @return the nome
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * @param nome the nome to set
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	/**
	 * @return the descricao
	 */
	public String getDescricao() {
		return descricao;
	}

	/**
	 * @param descricao the descricao to set
	 */
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	/**
	 * @return the dataInicio
	 */
	public Timestamp getDataInicio() {
		return dataInicio;
	}

	/**
	 * @param dataInicio the dataInicio to set
	 */
	public void setDataInicio(Timestamp dataInicio) {
		this.dataInicio = dataInicio;
	}

	/**
	 * @return the dataTermino
	 */
	public Timestamp getDataTermino() {
		return dataTermino;
	}

	/**
	 * @param dataTermino the dataTermino to set
	 */
	public void setDataTermino(Timestamp dataTermino) {
		this.dataTermino = dataTermino;
	}

	/**
	 * @return the respostaEsperada
	 */
	public BigDecimal getRespostaEsperada() {
		return respostaEsperada;
	}

	/**
	 * @param respostaEsperada the respostaEsperada to set
	 */
	public void setRespostaEsperada(BigDecimal respostaEsperada) {
		this.respostaEsperada = respostaEsperada;
	}

	/**
	 * @return the receitaEsperada
	 */
	public BigDecimal getReceitaEsperada() {
		return receitaEsperada;
	}

	/**
	 * @param receitaEsperada the receitaEsperada to set
	 */
	public void setReceitaEsperada(BigDecimal receitaEsperada) {
		this.receitaEsperada = receitaEsperada;
	}

	/**
	 * @return the custoEstimado
	 */
	public BigDecimal getCustoEstimado() {
		return custoEstimado;
	}

	/**
	 * @param custoEstimado the custoEstimado to set
	 */
	public void setCustoEstimado(BigDecimal custoEstimado) {
		this.custoEstimado = custoEstimado;
	}

	/**
	 * @return the custoReal
	 */
	public BigDecimal getCustoReal() {
		return custoReal;
	}

	/**
	 * @param custoReal the custoReal to set
	 */
	public void setCustoReal(BigDecimal custoReal) {
		this.custoReal = custoReal;
	}

	/**
	 * @return the meta
	 */
	public Integer getMeta() {
		return meta;
	}

	/**
	 * @param meta the meta to set
	 */
	public void setMeta(Integer meta) {
		this.meta = meta;
	}
}
